import axios from 'axios';  // 添加这行
import { ElMessage } from 'element-plus';
import router from '../router'; // 引入路由实例，用于跳转登录页


// 创建axios实例
const api = axios.create({
  baseURL: '/app',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
api.interceptors.request.use(
  (config) => {
    // 添加token等认证信息
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 请求错误时弹出提示
    ElMessage.error('请求发送失败，请检查网络连接');
    return Promise.reject(error);
  }
);

// 响应拦截器
api.interceptors.response.use(
  (response) => {
    // 统一处理响应数据
    const responseData = response.data;
    // 检查是否为登录过期错误
    if (responseData.code === 'A000130' || responseData.code === 'A000131') {
      router.push('/login'); // 跳转到登录页
      ElMessage.error('会话过期，请重新登录');
      throw new Error('会话过期, 重新登录')
    }
    
    // 直接返回响应数据，不要做额外处理
    return responseData;
  },
  (error) => {
    // 统一处理错误
    console.error('API Error:', error);
    
    // 获取错误信息
    let errorMessage = '网络请求失败，请稍后重试';
    if (error.response) {
      // 服务器返回了错误状态码
      if (error.response.data && error.response.data.message) {
        errorMessage = error.response.data.message;
      } else {
        errorMessage = `请求失败 (${error.response.status})`;
      }
    } else if (error.request) {
      // 请求发送了但没有收到响应
      errorMessage = '服务器未响应，请检查网络连接';
    }
    
    // 弹出错误提示
    ElMessage.error(errorMessage);
    
    // 继续抛出异常，让上层可以捕获
    return Promise.reject(error);
  }
);

export default api;